package vista.main;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

import vista.panels.PanelAltaCliente;
import vista.panels.PanelCrearCotizacion;
import vista.panels.PanelCrearOrdenDePedido;
import vista.panels.PanelEliminarCliente;
import vista.panels.PanelModificarCliente;
import vista.panels.PanelSolicitudDeCotiazacion;

import cliente.ClienteImp;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MainView extends JFrame {

	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ClienteImp cliente = new ClienteImp();
					MainView frame = new MainView(cliente);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	JPanel contentPane;
	public MainView(final ClienteImp cliente) {
		setTitle("Oficina De Ventas");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 597, 382);
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mnInicio = new JMenu("Inicio");
		menuBar.add(mnInicio);
		

		final JMenuItem mntmConectarAlCasa = new JMenuItem("Conectar al  casa central ...");
	
		
		mnInicio.add(mntmConectarAlCasa);
		
		JMenuItem mntmSalir = new JMenuItem("Salir");
		mnInicio.add(mntmSalir);
		
		JMenu mnAbmClientes = new JMenu("ABM - Clientes");
		menuBar.add(mnAbmClientes);
		
		JMenuItem mntmAltaCliente = new JMenuItem("Alta Cliente");
		
		mnAbmClientes.add(mntmAltaCliente);
		
		JMenuItem mntmModificarCliente = new JMenuItem("Modificar Cliente");
		
		mnAbmClientes.add(mntmModificarCliente);
		
		JMenuItem mntmEliminarCliente = new JMenuItem("Eliminar Cliente");
		
		mnAbmClientes.add(mntmEliminarCliente);
		
		JMenu mnCotizacionDeRodamientos = new JMenu("Cotizacion De Rodamientos");
		menuBar.add(mnCotizacionDeRodamientos);
		
		JMenuItem mntmCrearCotizacion = new JMenuItem("Crear Cotizacion");
		
		mnCotizacionDeRodamientos.add(mntmCrearCotizacion);
		
		JMenuItem mntmSolicitudDeCotizacion = new JMenuItem("Solicitud de Cotizacion");

		mnCotizacionDeRodamientos.add(mntmSolicitudDeCotizacion);
		
		JMenu mnOrdenDePedido = new JMenu("Orden De Pedido");
		menuBar.add(mnOrdenDePedido);
		
		JMenuItem mntmCrearOrdenPedido = new JMenuItem("Crear Orden Pedido");
		
		mnOrdenDePedido.add(mntmCrearOrdenPedido);
		
		JMenu mnRemitos = new JMenu("Remitos");
		menuBar.add(mnRemitos);
		
		JMenuItem mntmGenerarRemito = new JMenuItem("Generar Remito de Cliente");
		
		mnRemitos.add(mntmGenerarRemito);
		
		JMenu mnFacturas = new JMenu("Facturas");
		menuBar.add(mnFacturas);
		
		JMenuItem mntmGenerarFacturaCliente = new JMenuItem("Generar Factura Cliente");
		
		mnFacturas.add(mntmGenerarFacturaCliente);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		GroupLayout gl_contentPane = new GroupLayout(contentPane);
		gl_contentPane.setHorizontalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGap(0, 424, Short.MAX_VALUE)
		);
		gl_contentPane.setVerticalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGap(0, 252, Short.MAX_VALUE)
		);
		/**
		 * Eventos
		 */
		mntmConectarAlCasa.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String direccion = JOptionPane.showInputDialog("Ingrese direccion del servior ", "");
					try{
						if(cliente.getSession())
						{
							JOptionPane.showMessageDialog(null, "Conectado..");
							mntmConectarAlCasa.setEnabled(false);
						}
					}catch (Exception e){
						javax.swing.JOptionPane.showMessageDialog(null,e.getMessage());
					}
			}
		});
		mntmSalir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				System.exit(1);
			}
		});
		mntmSolicitudDeCotizacion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			 limpiarPanel(contentPane);
			 contentPane = new PanelSolicitudDeCotiazacion (cliente);
			 actualizarPanel(contentPane);
			}
		});
		mntmAltaCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				contentPane = new PanelAltaCliente(cliente);
				actualizarPanel(contentPane);
				
			}
		});
		mntmModificarCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				contentPane = new PanelModificarCliente(cliente);
				actualizarPanel(contentPane);
				
			}
		});
		mntmEliminarCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				contentPane = new PanelEliminarCliente(cliente);
				actualizarPanel(contentPane);
			}
		});
		mntmCrearCotizacion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				contentPane = new PanelCrearCotizacion(cliente);
				actualizarPanel(contentPane);
			}
		});
		
		mntmCrearOrdenPedido.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				contentPane = new PanelCrearOrdenDePedido(cliente);
				actualizarPanel(contentPane);
			}
		});
		mntmGenerarRemito.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				
				actualizarPanel(contentPane);
			}
		});
		mntmGenerarFacturaCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				
				actualizarPanel(contentPane);
			}
		});
		
		contentPane.setLayout(gl_contentPane);
	}
	/**
	 * Panel manager
	 * @param contentPane 
	 */
	private void actualizarPanel(JPanel contentPane){
		repaint();
		setContentPane(contentPane);
		validate();
		setVisible(true);
	}
	private void limpiarPanel(JPanel contentPane){
		getContentPane().remove(contentPane);
		repaint();
		contentPane = null;
		validate();
		
	}
}
